The Microsoft .NET platform provides extensive possibilities to things that were difficult or impossible before. This section describes how this can be done in Content Studio.

Programming API

The Content Studio platform provides extensive possibilities to write programming code. All parts of the components and server environment can be handled via the programming API. The complete set of classes, methods and functions is found in the API documentation.

CS Site library

The site library contains functionality for handling everything that is related to the documents on the site. The most important class is SiteBase which implements all functionality of the Content Studio documents. Every document and most other classes inherit this class. The CS Site lib is a high level wrapper over the CS Server library and adds high lever logic that is specific to the web site client.

The engines of the AS components are implemented in SiteLib. This means that it is quite easy to implement the functionality of the AS components using the API.

CS Server library

The CS Server library, together with the underlying database, is the hart and brain of Content Studio. All business rules, content management and interaction with the underlying operating system is done via this vast library. Access to this library is done via the .NET remoting infrastructure via the CS Server listener service.

Viewstate and post-back

Viewstate

Viewstate är en ASP.NET teknik för att minnas ett formulärs innehåll. Utan viewstate rensas ett formulär efter det skickas, men med viewstate kommer ASP.NET ihåg formulärets innehåll och visar det när sidan laddas.

För att aktivera viewstate i Content Studio måste, precis som i ASP.NET attributen enableviewstate="true" och runat="server" läggas till på formuläret. Viewstate är dock som standard aktiverat på formulär som infogas via menyn. Viewstate behöver ej aktiveras för kontroller som ligger i formuläret. Det enda som krävs är runat="server".

Post-back

Post-back är en händelse som aktiveras av en kontroll. Exempelvis när man trycker på en asp:button sker det en post-back och knappens onclick händelse körs. När en post-back sker körs först page load och därefter koden för händelsen. Vanligtvis vill man ladda kontroller på sidan med data endast första gången sidan laddas och inte varje gång en post-back körs. För att kontrollera om en post-back har skett kontrolleras Page.IsPostBack, som är en boolean.

Kodexemplet fyller TextBox1 med data när sidan laddas. Texten körs inte då kontrollers händelser triggas, som exempelvis onclick på en knapp.

C#
protected void Page_Load(object sender, EventArgs e ) 
{ if (!Page.IsPostBack) TextBox1.Text = getData(); }
VB
Protected Sub Page_Load(ByVal sender As Object, ByVal e As EventArgs) 
	If Not Page.IsPostBack Then 
		TextBox1.Text = getData() 
	End If 
End Sub               

Post-back är som namnet antyder en postning till samma sida. Knappens tryckning gör att formuläret postas till samma sida och där ser ASP.NET till att rätt metod körs. Post-backs i Content Studio fungerar på samma sätt som i Visual Studio. Se ASP.NET Controls nedan för med information om hur man använder server kontroller.

Run-at Server

Run-at server (runat="server") är ett attribut läggs till på html-element för att markera att elementet ska bli en ASP.NET kontroll. Attributet måste finnas på alla serverkontroller (kontroller av typen asp:namn) för att de ska fungera. Run-at server kan även användas på vanliga html-kontroller som exempelvis input, div, span och img. Kontroller blir då en kontroll som kan anropas från C# eller VB.NET kod. Förutom run-at server krävs även attributet id för att kunna anropa kontrollen. ASP.NET skapar automatisk en variabel av typen som matchar elementet. Exempelvis img-elementet blir en klass av typen HtmlImage som sedan enkelt anropas genom att skriva myimage.Src = "image.jpg".

Code behind

 ASP.NET supports two methods to author pages:

In-line code is code that is embedded directly within the ASP.NET page. Code-behind refers to code for your ASP.NET page that is contained within a separate class file. This allows a clean separation of your HTML from your presentation logic. Content Studio only supports code behind.

Visual Studio vs. Content Studio

Möjligheten att använda Visual Studio i sitt utvecklingsarbete är det många som är intresserade av. För närvarande finns ingen integration mellan CS och VS men för den som vill är det till viss del möjligt att utnyttja Visual Studio.

Visual Studio project

Skapa ett webbprojekt i Visual Studio. Skapa och redigera en .aspx fil. För att spara in filen i Content Studio:
Kopiera innehållet i <body> till html-läget i Content Studio. Kopiera innehållet i bakomliggande koden (förutom klassdefinitionen) till CS bakomliggande kod. OBS! Klassnamnet måste vara på formen CS_Default_XXXX, där XXXX är dokumentid. Klassen måste ärva från SiteBase.

Intellisense

Intellisensestöd fås genom att lägga till referenser till Content Studios assemblies; CS_SiteLib.dll, CSServer5.dll. Dessa kan manuellt kopieras in, eller om Content Studio finns installerat lokalt så finns dessa i GAC (Global Assembly Cache). För att lägga till referens i Visual Studio klicka på projektet och välj Add Reference. Eller kopiera direktiven i system.web/compilation/assemblies från web.config på en Content Studio site.

Avlusning

Avlusning av en Content Studio site i Visual Studio är möjligt, det kräver dock att några filer kopieras från en CS site.

  1. Kopiera Global.asax från sitemappen och lägg in i projektet.
  2. Kopiera remotingkonfigurationsfilen CSServer5.Config filen från sitemappen och lägg in i projektet. Om debuggingen ska gå mot lokal maskin behöver inga ändringar göras. Om avlusningen ska gå mot en server på det lokala nätverk byt ut "ipc://CS-ipc/" mot "tcp://server:9792/", där server är namnet på servern. Gör detta på alla ställen i CSServer5.config.

Alla anrop till CS assemblies går nu via remoting och kommer att köras under kontot som kör Content Studios servertjänst (precis som på webbplatsen). Nackdelar med lösningen:

För mer information om detta ämne se nedanstående rubrik eller den mer fördjupande artikeln Calling Content Studio API externally.

Calling Content Studio API from custom applications

To be able to make calls to the Content Studio API the product must be installed locally on the development computer and on any computer that should run your application. Additionally, the Content Studio services must be running in to be able to receive any calls. In your application's constructor or entry point (this includes the Application_Start event in the Global.asax file) there must be a call that configures the channels and objects that will be called via the .NET Remoting infrastructure. This subject has thouroughly been documented in the article Calling Content Studio API externally. This article contains links to downloadable code for both configuration files and a code file that helps the developer to get started.